package com.yaolong.api.modules.gen.vo;

import lombok.Data;

import java.util.List;
import java.util.Map;

/**
 * @author yaolong
 * @version V1.0.0
 * @program EasyCode
 * @description 表字段生成配置实体
 * @create 2022-12-30 10:47
 **/
@Data
public class GenTableFieldConfigEntity {

    /**
     * 是否自增
     */
    private Boolean keyIdentityFlag;

    /**
     * 是否主键
     */
    private Boolean keyFlag;
    /**
     * 表字段名
     */
    private String field;

    /**
     * 属性名
     */
    private String propertyName;

    /**
     * 表字段注释
     */
    private String comment;

    /**
     * 表字段类型
     */
    private String type;

    /**
     * 对应的java类型
     */
    private String javaType;

    /**
     * 对应的ts类型
     */
    private String tsType;

    /**
     * 前端组件类型
     */
    //TODO 前端组件如果是ApiSelect、select、开关需要生成特定的前端模板和后台接口
    private String componentType;

    /**
     * 校验规则正则字符串
     */
    private String checkRule;

    /**
     * 字段的字典：当字段是一个下拉框时可以配置字典
     */
    private List<Map<String, String>> fieldDict;

    /**
     * 字典类型： api、custom
     */
    private String dictType;

    /**
     * 是否必填字段：默认根据数据库字段的是否为空填充，前端可以进行更改
     */
    private Boolean required;

    /**
     * 是否是过滤的搜索框
     */
    private Boolean isQuery;

    /**
     * 查询的模式（模糊、等于、大于小于、等等）--这是一个下拉框一般从数据库查询，可配置的，现在先写死
     *
     *         { label: '模糊', value: 'like' },
     *         { label: '右模糊', value: 'likeRight' },
     *         { label: '左模糊', value: 'likeLeft' },
     *         { label: '模糊不包含', value: 'notLike' },
     *         { label: '全等', value: 'eq' },
     *         { label: '不等于', value: 'ne' },
     *         { label: '大于等于', value: 'ge' },
     *         { label: '大于', value: 'gt' },
     *         { label: '小于等于', value: 'le' },
     *         { label: '小于', value: 'lt' },
     *         { label: '暂无', value: -1 },
     *
     */
    private String queryModeSelect;


    /**
     * 是否显示列表字段
     */
    private Boolean showTableColumn;


    /**
     * 是否生成该字段
     */
    private Boolean isGenColumn;


    /**
     * 该字段是否在新增或者修改时显示或隐藏
     */
    private Boolean isShowFieldByUpdateOrCreate;

    /**
     * 是否在新增或者修改操作中生成
     */
    private Boolean isGenFieldByUpdateOrCreate;

    /**
     * 前端是否禁用该字段
     */
    private Boolean isDisableField;


    /**
     * 是否公共的base实体字段
     */
    private Boolean isCommon;
}
